package algorithm;

import java.util.HashMap;

public class leetcode_0560 {
    public int subarraySum(int[] nums, int k) {
        int len=nums.length;
        int num=0;
        int[] pre=new int[len];
        pre[0]=nums[0];
        for(int i=1;i<len;++i){
            pre[i]=pre[i-1]+nums[i];
        }
        HashMap<Integer, Integer> map=new HashMap<>();
        map.put(0,1);
        for(int i=0;i<len;++i){
            if(map.containsKey(pre[i]-k)){
                num+=map.get(pre[i]-k);
            }
            if(map.containsKey(pre[i])){
                map.put(pre[i],map.get(pre[i])+1);
            }else{
                map.put(pre[i],1);
            }
        }
        return num;
    }
}
